﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form2 : Form
    {
        string dataurodzenia = "Data";
        public string nazwatabeli;
        public  WynikZapytania r;
        public List<string> Daty = new List<string>();

        public Form2(string nazwa, string name)
        {
            InitializeComponent();
            this.Text = name;
            nazwatabeli = nazwa;
            List<string> t1 = new List<string>(); t1.Add("wersy"); t1.Add("komórki");
            BazaDaych.Inicjalizacja();
            dataGridView1.MultiSelect = false;
            comboBox3.DataSource = t1;
            string[] gw = { "*" };
                r = BazaDaych.WykonajZWynikiem( Zapytanie.Select(nazwatabeli,null,gw) );
            Operacje.ViewUpdate(dataGridView1, r);
            List<string> L = new List<string>();
            for (int i = 0; i < r.kolumny; i++) if (r.GetInfo(0, i).Length<4 || r.GetInfo(0, i).Substring(0,4) !=dataurodzenia) L.Add(r.GetInfo(0, i));
            List<string> R = new List<string>();

            for (int i = 0; i < r.kolumny; i++) if (r.GetInfo(0, i).Length < 4 || r.GetInfo(0, i).Substring(0, 4) != dataurodzenia) R.Add(r.GetInfo(0, i)); else Daty.Add(r.GetInfo(0, i));
            comboBox1.DataSource = L;
            comboBox2.DataSource = R;
            comboBox4.DataSource = Daty;
            label7.Text = (r.wersy).ToString();
            if (rodzaj( nazwatabeli)==0) comboBox3.Enabled = false;
            

        }

        
        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {

            if (comboBox3.SelectedValue.ToString() == "komórki") { dataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect; button4.Text = "Edytuj"; return; }
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            button4.Text = "Usuń";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string[] gw = { "*" };
            if (textBox1 == null && textBox2 == null && textBox3 == null && textBox4 == null)
            {
                
                r = BazaDaych.WykonajZWynikiem(Zapytanie.Select(nazwatabeli, null, gw));
                Operacje.ViewUpdate(dataGridView1, r);
                dataGridView1.Update();
                label7.Text = (r.wersy).ToString();

                return;

            }
            List<string> L=new List<string>();
            List<Wartosc> W=new List<Wartosc>();

            if (textBox1.Text != "")
            {
                 L = Operacje.Parsowanie(textBox1.Text);
                 foreach (string a in L) { W.Add(new Wartosc(comboBox1.SelectedValue.ToString(), a));  }
            }
            //textBox2.Text = L.Count.ToString();
            
            if (textBox2.Text != "") 
                {
                    L = Operacje.Parsowanie(textBox2.Text); 
                foreach (string a in L) W.Add(new Wartosc(comboBox2.SelectedValue.ToString(), a));
               }
              
          // if (textBox3.Text!="" && textBox4.Text!="") W.Add(new Wartosc(comboBox4.SelectedValue.ToString(),textBox3.Text,textBox4.Text ));

            string qwerenda = Zapytanie.Select(nazwatabeli, null, gw, W.ToArray());
               r = BazaDaych.WykonajZWynikiem(qwerenda);
               Operacje.ViewUpdate(dataGridView1, r);
               label7.Text = (r.wersy).ToString();
               dataGridView1.Update();
           
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void button4_Click(object sender, EventArgs e) //Edytuj
        {
            if (button4.Text == "Edytuj") { Form3 f = new Form3(this); f.Show(); }
            else {
                string tab;
                if (nazwatabeli == "ludziewszyscy") tab = "ludzie"; else tab = nazwatabeli;
                string wyn = "";
                wyn += "Delete from " + tab + " where ";
                if (rodzaj(nazwatabeli) == 1) wyn += "Id=" + dataGridView1.SelectedRows[0].Cells[r.kolumny - 1].Value.ToString() + ";";
                if (rodzaj(nazwatabeli) == 2) { wyn += "Numer=" + dataGridView1.SelectedRows[0].Cells[r.kolumny - 1].Value.ToString() + ";";  }
                if (rodzaj(nazwatabeli) == 0) wyn += " Rok=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + " and Numer= " + dataGridView1.SelectedRows[0].Cells[1].Value.ToString() + ";";
                BazaDaych.Wykonaj(wyn);
                pokazwszystko();
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            pokazwszystko();
        }

        public static int rodzaj(string  s)
        {
            if (s == "akty") return 2;
            if (s == "ludzie") return 1;
            if (s == "ludziewszyscy") return 1;
            if (s == "ksieza") return 1;
            if (s == "parafie") return 1;
        return 0;
        }

        public void pokazwszystko()
        {
            string[] gw = { "*" };
            r = BazaDaych.WykonajZWynikiem(Zapytanie.Select(nazwatabeli, null, gw));
            Operacje.ViewUpdate(dataGridView1, r);
            label7.Text = (r.wersy).ToString();
            dataGridView1.Update();
        }

        private void button2_Click(object sender, EventArgs e) //dodaj
        {
            if (nazwatabeli == "ludzie" || nazwatabeli == "ludziewszyscy") new DodajLudzia(this).Show();
            if (nazwatabeli == "ksieza") new DodjaKsiedza(this).Show();
            if (nazwatabeli == "chrzty") new DodajCrzest(this).Show();
            if (nazwatabeli == "sluby") new DodajSlub(this).Show();
            if (nazwatabeli == "zgony") new DodajPgrzeb(this).Show();
            if (nazwatabeli == "akty") new DodajZaswiadczenie(this).Show();
            if (nazwatabeli == "parafie") new DodajParafie(this).Show();
        }
    }
}
